package org.cyk.imgbed.test

import java.util.UUID
import kotlin.io.encoding.Base64
import kotlin.io.encoding.ExperimentalEncodingApi

object GiteeImgBed {

    //gitee 私人令牌(这里就不展示了)
    val ACCESS_TOKEN = "f21e971699b884d44e5f560509d01e49"

    //gitee 个人空间名，不知道的可以看下面图片
    val OWNER = "chen-yikang-bit"

    //仓库名
    val REPO = "img"

    //指定存放图片路径
    val PATH = "/test/${DateUtils.getYearMonth()}/"

    //提交描述
    val ADD_MSG = "add img"
    val DEL_MSG = "del img"

    /**
     * 新建(POST)、获取(GET)、删除(DELETE): 将来对应的请求方式
     * 第一个 %s: 仓库所属地址空间(企业、组织或者个人地址 path) (owner)
     * 第二个 %s: 仓库路径(repo)
     * 第三个 %s: 文件路径(path)
     */
    val API_CREATE_POST = "https://gitee.com/api/v5/repos/%s/%s/contents/%s"

    /**
     * 创建(获取，删除) 的指定文件路径
     */
    fun createUploadFileUrl(originalFilename: String): String {
        //获取文件后缀
        val suffix = FileUtils.getFileSuffix(originalFilename)
        //图片名称
        val fileName = "${System.currentTimeMillis()}_${UUID.randomUUID()}$suffix"
        //填充请求路径
        val url = String.format(
            API_CREATE_POST,
            OWNER,
            REPO,
            PATH + fileName)
        return url
    }

    @OptIn(ExperimentalEncodingApi::class)
    fun getUploadBodyMap(multipartFile: ByteArray) = mapOf(
            "access_token" to ACCESS_TOKEN,
            "message" to ADD_MSG,
            "content" to Base64.encode(multipartFile)
        )

}